package cn.gson.querydsl.dao.impl;

import cn.gson.querydsl.dao.HibernateDaoImpl;
import cn.gson.querydsl.dao.QueryHandler;

import java.lang.reflect.Method;

/**
 * <p>****************************************************************************</p>
 * <ul style="margin:15px;">
 * <li>Description : DaoQueryHandler</li>
 * <li>Version     : 1.0</li>
 * <li>Creation    : 2024年07月19日</li>
 * <li>@author     : ____′↘夏悸</li>
 * </ul>
 * <p>****************************************************************************</p>
 */
public class DaoQueryHandler implements QueryHandler {
    private final HibernateDaoImpl daoImpl;

    public DaoQueryHandler(Class<?> entityClass) {
        daoImpl = new HibernateDaoImpl(entityClass);
    }

    @Override
    public Object doQuery(Method method, Object[] args) throws Throwable {
        Method impl = daoImpl.getClass().getDeclaredMethod(method.getName(), method.getParameterTypes());
        return impl.invoke(daoImpl, args);
    }
}
